package com.ihr360.oneclick.service;

import com.ihr360.oneclick.entity.StaffRecord;
import com.ihr360.oneclick.request.SearchRequest;
import com.ihr360.oneclick.vo.PageData;

import java.util.List;

/**
 * 员工名录业务控制层
 *
 * @author tom
 * @date 17-12-20
 */
public interface StaffRecordService {

    /**
     * 获取分页数据
     *
     * @param userId     用户Id
     * @param companyId     公司Id
     * @param searchRequest 查询请求参数
     * @return page data
     */
    PageData<StaffRecord> getPageData(String userId, String companyId, SearchRequest searchRequest);

    /**
     * 获取所有数据
     *
     * @param companyId     公司Id
     * @param searchRequest 查询请求参数
     * @return page data
     */
    List<StaffRecord> getAllData(String companyId, SearchRequest searchRequest);

    /**
     * 根据Id获取员工名录信息
     *
     * @param companyId     公司Id
     * @param staffRecordId 名录Id
     * @return StaffRecord
     */
    StaffRecord getStaffRecordById(String companyId, String staffRecordId);


    /**
     * 获取公司下面所有的员工名录数据
     *
     * @param companyId 公司Id
     * @return StaffList list
     */
    List<StaffRecord> getCompanyAllStaffRecord(String companyId);

    /**
     * 根据多个员工名录Id获取员工名录list
     * notes: 需要根据多个Id查询 可调用
     *
     * @param companyId       公司Id
     * @param staffListIdList 员工名录Id list
     * @return StaffList list
     */
    List<StaffRecord> getList(String companyId, List<String> staffListIdList);

    /**
     * 根据手机号码获取指定公司的员工名录
     *
     * @param companyId 公司Id
     * @param mobileNo 手机号码
     * @return StaffRecord
     */
    StaffRecord getStaffRecordByCompanyIdAndMobileNo(String companyId, String mobileNo);


    /**
     * 修改员工名录查看权限
     *
     * @param companyId     公司Id
     * @param staffRecordId 员工名录Id
     * @param allow         是否允许查看
     * @return 最新权限 true 允许查看 false 不允许查看
     */
    Boolean updateAllow(String companyId, String staffRecordId, boolean allow);

    /**
     * 批量修改员工名录查看权限
     *
     * @param companyId         公司Id
     * @param staffRecordIdList 员工名录Id
     * @param allow             是否允许查看
     * @return 最新权限 true 允许查看 false 不允许查看
     */
    Boolean updateAllowBatch(String companyId, List<String> staffRecordIdList, boolean allow);

}
